package rl.educational.workbook.esempi;




import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor; 

import rl.educational.util.StringHandler;
import rl.educational.workbook.ExcelWorkbook;
import rl.educational.workbook.esempi.model.B010;
 
  


public class ProtocolloExcelWorkbook extends ExcelWorkbook{
	public static final String LABEL_Ambito="Ambito";
	public static final String LABEL_Protocollo_EQS="Protocollo EQS";
	public static final String LABEL_Data="Data";
	public static final String LABEL_Protocollo_Adr="Protocollo Adr";
	public static final String LABEL_Data_Adr="Data Adr";
	public static final String LABEL_Data_Istanza="Data Istanza";
	public static final String LABEL_Scadenza_prima_rata="Scadenza prima rata";
	public static final String LABEL_Numero_rate="Numero rate";
	public static final String LABEL_Stato="Stato";
	public static final String LABEL_Articoli_protocollati="Articoli protocollati";
	public static final String LABEL_Importo_protocollato="Importo protocollato";
	public static final String LABEL_Articoli_dilazionati="Articoli dilazionati";
	public static final String LABEL_Importo_dilazionato="Importo dilazionato";
	public static final String LABEL_Mora="Mora";
	public static final String LABEL_Compensi="Compensi";
	public static final String LABEL_Spese_esecutive="Spese esecutive";
	public static final String LABEL_Codice_fiscale="Codice fiscale";
	public static final String LABEL_Cognome="Cognome";
	public static final String LABEL_Nome="Nome";
	public static final String LABEL_Partita_Iva="Partita Iva";
	public static final String LABEL_Denominazione="Denominazione";
	public static final String LABEL_Via="Via";
	public static final String LABEL_Civico_numero="Civico numero";
	public static final String LABEL_Civico_lettera="Civico lettera";
	public static final String LABEL_KM="KM";
	public static final String LABEL_Palazzina="Palazzina";
	public static final String LABEL_Scala="Scala";
	public static final String LABEL_Piano="Piano";
	public static final String LABEL_Interno="Interno";
	public static final String LABEL_Presso="Presso";
	public static final String LABEL_Localita="Localita";
	public static final String LABEL_CAP="CAP";
	public static final String LABEL_Comune="Comune";
	public static final String LABEL_Provincia="Provincia";
	public static final String LABEL_Approvazione="Approvazione";
	public static final String LABEL_Stampa_massiva_accoglimento="Stampa massiva accoglimento";
	public static final String LABEL_Normalizzazione_indirizzo="Normalizzazione indirizzo";
	public static final String LABEL_Causa_scarto="Causa scarto";
	

	private static final String ARIAL_DIECI_GRASSETTO_CENTRO_BIANCO = "arialDieciGrassettoCentroBianco";
	private static final String ARIAL_DIECI_GRASSETTO_CENTRO_NERO = "arialDieciGrassettoCentroNero";
	private static final String ARIAL_DIECI_GRASSETTO_CENTRO_NERO2 = "arialDieciGrassettoCentroNeroSfondoBlu";
	private static final String ARIAL_DIECI_GRASSETTO_DESTRA_NERO = "arialDieciGrassettoDestraNero";
	private static final String ARIAL_DIECI_GRASSETTO_SINISTRA_NERO = "arialDieciGrassettoSinistraNero";
	private static final String ARIAL_DIECI_DESTRA_SF_BLU = "arialDieciDestraSfondoBlu";
	private static final String ARIAL_DIECI_SINISTRA_SF_BLU = "arialDieciSinistraSfondoBlu";
	private static final String ARIAL_DIECI_DESTRA_SF_BIANCO = "arialDieciDestraSfondoBianco";
	private static final String ARIAL_DIECI_SINISTRA_SF_BIANCO = "arialDieciSinistraSfondoBianco";
	private static final String ARIAL_DIECI_DESTRA_SF_BIANCO_MONEY = "arialDieciDestraSfondoBiancoMoney";
	private static final String ARIAL_DIECI_DESTRA_SF_BLU_MONEY = "arialDieciDestraSfondoBluMoney";
	
	public void fillProtocolliStampati(String sheetName, ArrayList< B010> b010List) throws Exception {
		Writer primoWriter = getWriters().get(sheetName);
		
		int indiceRigaDettaglio = 1; 
		
		// APERTURA SHEET.
		creazioneSheet(primoWriter, true);
		
		creazioneIntestazioneProtocolliStampati( primoWriter ); 
		
		creazioneHeaderProtocolliStampati( primoWriter ); 
   
		for (B010 b010: b010List) {
			creazioneRigaDettaglioStampati(primoWriter, b010, indiceRigaDettaglio++);
		} 
		
		
		chiusuraSheet(primoWriter, true); 
	}
	
	public void fillProtocolliNonStampati(String sheetName, ArrayList<  B010> b010List) throws Exception {
		Writer primoWriter = getWriters().get(sheetName);
		
		int indiceRigaDettaglio = 1; 
		 
		creazioneSheet(primoWriter, true);
		
		creazioneIntestazioneProtocolliNonStampati( primoWriter ); 
		
		creazioneHeaderProtocolliNonStampati( primoWriter ); 
   
		for (B010 b010: b010List) {
			creazioneRigaDettaglioNonStampati(primoWriter, b010, indiceRigaDettaglio++);
		} 
		 
		chiusuraSheet(primoWriter, true); 
	}

	protected void creazioneIntestazioneProtocolliStampati(Writer writerOut) throws Exception { 
		writerOut.write("<cols>" + "	" + 
				
				
				" 	<col min=\"1\" max=\"1\" width=\"18.85546875\" customWidth=\"1\"/>						" + 
				" 	<col min=\"2\" max=\"2\" width=\"16.42578125\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"3\" max=\"3\" width=\"10.7109375\" bestFit=\"1\" customWidth=\"1\"/>         " + 
				" 	<col min=\"4\" max=\"4\" width=\"16.140625\" bestFit=\"1\" customWidth=\"1\"/>          " + 
				" 	<col min=\"5\" max=\"5\" width=\"10.85546875\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"6\" max=\"6\" width=\"13.85546875\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"7\" max=\"7\" width=\"21.140625\" bestFit=\"1\" customWidth=\"1\"/>          " + 
				" 	<col min=\"8\" max=\"8\" width=\"14.5703125\" bestFit=\"1\" customWidth=\"1\"/>         " + 
				" 	<col min=\"9\" max=\"9\" width=\"10.28515625\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"10\" max=\"10\" width=\"20.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"11\" max=\"11\" width=\"22\" bestFit=\"1\" customWidth=\"1\"/>               " + 
				" 	<col min=\"12\" max=\"12\" width=\"19.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"13\" max=\"13\" width=\"21\" bestFit=\"1\" customWidth=\"1\"/>               " + 
				" 	<col min=\"15\" max=\"15\" width=\"12.140625\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"16\" max=\"16\" width=\"17.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"17\" max=\"17\" width=\"21.5703125\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"20\" max=\"20\" width=\"12.140625\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"21\" max=\"21\" width=\"66\" bestFit=\"1\" customWidth=\"1\"/>               " + 
				" 	<col min=\"33\" max=\"33\" width=\"24.85546875\" bestFit=\"1\" customWidth=\"1\"/>      " + 
				" 	<col min=\"35\" max=\"35\" width=\"15.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"36\" max=\"36\" width=\"255.7109375\" bestFit=\"1\" customWidth=\"1\"/>      " + 
				 
			"</cols>");
					
			writerOut.write("<sheetData>\n");
	}

	protected void creazioneIntestazioneProtocolliNonStampati(Writer writerOut) throws Exception { 
		writerOut.write("<cols>" + "	" + 

				
				" 	<col min=\"1\" max=\"1\" width=\"18.85546875\" customWidth=\"1\"/>						" + 
				" 	<col min=\"2\" max=\"2\" width=\"16.42578125\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"3\" max=\"3\" width=\"10.7109375\" bestFit=\"1\" customWidth=\"1\"/>         " + 
				" 	<col min=\"4\" max=\"4\" width=\"16.140625\" bestFit=\"1\" customWidth=\"1\"/>          " + 
				" 	<col min=\"5\" max=\"5\" width=\"10.85546875\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"6\" max=\"6\" width=\"13.85546875\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"7\" max=\"7\" width=\"21.140625\" bestFit=\"1\" customWidth=\"1\"/>          " + 
				" 	<col min=\"8\" max=\"8\" width=\"14.5703125\" bestFit=\"1\" customWidth=\"1\"/>         " + 
				" 	<col min=\"9\" max=\"9\" width=\"10.28515625\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"10\" max=\"10\" width=\"20.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"11\" max=\"11\" width=\"22\" bestFit=\"1\" customWidth=\"1\"/>               " + 
				" 	<col min=\"12\" max=\"12\" width=\"19.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"13\" max=\"13\" width=\"21\" bestFit=\"1\" customWidth=\"1\"/>               " + 
				" 	<col min=\"15\" max=\"15\" width=\"12.140625\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"16\" max=\"16\" width=\"17.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"17\" max=\"17\" width=\"21.5703125\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"20\" max=\"20\" width=\"12.140625\" bestFit=\"1\" customWidth=\"1\"/>        " + 
				" 	<col min=\"21\" max=\"21\" width=\"66\" bestFit=\"1\" customWidth=\"1\"/>               " + 
				" 	<col min=\"33\" max=\"33\" width=\"24.85546875\" bestFit=\"1\" customWidth=\"1\"/>      " + 
				" 	<col min=\"35\" max=\"35\" width=\"15.7109375\" bestFit=\"1\" customWidth=\"1\"/>       " + 
				" 	<col min=\"36\" max=\"36\" width=\"25\" bestFit=\"1\" customWidth=\"1\"/>      " + 
			"</cols>");
					
			writerOut.write("<sheetData>\n");
	}

	private void creazioneRigaDettaglioNonStampati(Writer writerDettaglio, B010 b010, int indiceRiga) throws Exception {

		int colonna = -1;
		// STILI.
		short indiceArialDieciDestra = 0;
		short indiceArialDieciSinistra = 0;
		short indiceArialDieciDestraMoney = 0;

		if ((indiceRiga % 2) == 1) {
			indiceArialDieciDestra = getStili().get(ARIAL_DIECI_DESTRA_SF_BIANCO).getIndex();
			indiceArialDieciSinistra = getStili().get(ARIAL_DIECI_SINISTRA_SF_BIANCO).getIndex();
			indiceArialDieciDestraMoney = getStili().get(ARIAL_DIECI_DESTRA_SF_BIANCO_MONEY).getIndex();
		} else {
			indiceArialDieciDestra = getStili().get(ARIAL_DIECI_DESTRA_SF_BLU).getIndex();
			indiceArialDieciSinistra = getStili().get(ARIAL_DIECI_SINISTRA_SF_BLU).getIndex();
			indiceArialDieciDestraMoney = getStili().get(ARIAL_DIECI_DESTRA_SF_BLU_MONEY).getIndex();
		}
		
		creazioneRiga(writerDettaglio, indiceRiga);
		
		
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getConcessione(), indiceArialDieciDestra);			//Ambito					C_CONCESSIONE
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNProtProvv() , indiceArialDieciDestra);			//Protocollo EQS		    N_PROT_PROVV
		creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDProtocolloEqs(), indiceArialDieciSinistra);			//Data				    D_DATA_PROVV
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getNumeroProtocolloAdR(), indiceArialDieciDestra);		//Protocollo Adr		    N_PROT_ADR
		creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDProtocolloEqs(), indiceArialDieciSinistra);			//Data Adr			    D_DATA_ADR
		creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDPresIstanza(), indiceArialDieciSinistra);			//Data Istanza		    D_DATA_ISTANZA
		creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDScadenzaPrimaRata(), indiceArialDieciSinistra);//Scadenza prima rata	    D_DATA_PRIMA_RATA
		 
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNProtProvv() , indiceArialDieciDestra);			
		 
		
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna,  b010.getF_stato(), indiceArialDieciDestra);	//Stato					F_STATO
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNumeroArticoliProtocollati() , indiceArialDieciDestra);	 //Articoli protocollati	N_ARTICOLI
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getImportoProtocollato()/ 100.0, indiceArialDieciDestraMoney);		//Importo protocollato	L_IMPORTO
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNumeroArticoliProtocollati(), indiceArialDieciDestra);	 	//Articoli dilazionati	N_ARTICOLI_DILAZ
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getImportoDilazionato()/ 100.0, indiceArialDieciDestraMoney);	//Importo dilazionato		L_IMPORTO_DILAZ
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getMora()/ 100.0, indiceArialDieciDestraMoney);	//Mora					L_MORA
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getCompensi()/ 100.0, indiceArialDieciDestraMoney);	//Compensi				L_COMPENSI
		creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getSpeseEsecutive()/ 100.0, indiceArialDieciDestraMoney);	//Spese esecutive			L_SPESE_ESECUTIVE
		

		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getCodiceFiscale(), indiceArialDieciSinistra);		 //Codice fiscale
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getCognome(), indiceArialDieciSinistra);			//Cognome
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getCognome(), indiceArialDieciSinistra);		//Nome
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getPartitaIva(), indiceArialDieciSinistra);		//Partita Iva
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getDenominazione(), indiceArialDieciSinistra);		//Denominazione
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getIndirizzo(), indiceArialDieciSinistra);		//Via
		 
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Civico numero	 
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getLettera(), indiceArialDieciDestra);		//Civico lettera
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//KM
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Palazzina
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Scala
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Piano
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Interno
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciSinistra);		//Presso
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna,"", indiceArialDieciSinistra);		//Localita
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna,   //CAP
				StringHandler.fillString("", StringHandler.FILLSX, 5, '0'), 
				indiceArialDieciDestra);		
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getComune(), indiceArialDieciSinistra);		//Comune
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getProvincia(), indiceArialDieciSinistra);		//Provincia 
		creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, 			//Approvazione
					     new Date(), indiceArialDieciDestra);
		
		//Normalizzazione indirizzo
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna,  "",  indiceArialDieciSinistra);	
		
		//Causa scarto
		creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciSinistra);	
		
		chiusuraRiga(writerDettaglio);
		
	}
	
	private void creazioneRigaDettaglioStampati(Writer writerDettaglio, B010 b010, int indiceRiga) throws Exception {

			int colonna = -1;
			// STILI.
			short indiceArialDieciDestra = 0;
			short indiceArialDieciSinistra = 0;
			short indiceArialDieciDestraMoney = 0;

			if ((indiceRiga % 2) == 1) {
				indiceArialDieciDestra = getStili().get(ARIAL_DIECI_DESTRA_SF_BIANCO).getIndex();
				indiceArialDieciSinistra = getStili().get(ARIAL_DIECI_SINISTRA_SF_BIANCO).getIndex();
				indiceArialDieciDestraMoney = getStili().get(ARIAL_DIECI_DESTRA_SF_BIANCO_MONEY).getIndex();
			} else {
				indiceArialDieciDestra = getStili().get(ARIAL_DIECI_DESTRA_SF_BLU).getIndex();
				indiceArialDieciSinistra = getStili().get(ARIAL_DIECI_SINISTRA_SF_BLU).getIndex();
				indiceArialDieciDestraMoney = getStili().get(ARIAL_DIECI_DESTRA_SF_BLU_MONEY).getIndex();
			}
			
			creazioneRiga(writerDettaglio, indiceRiga);
			
			
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getConcessione(), indiceArialDieciDestra);			//Ambito					C_CONCESSIONE
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNProtProvv() , indiceArialDieciDestra);			//Protocollo EQS		    N_PROT_PROVV
			creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDProtocolloEqs(), indiceArialDieciSinistra);			//Data				    D_DATA_PROVV
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getNumeroProtocolloAdR(), indiceArialDieciDestra);		//Protocollo Adr		    N_PROT_ADR
			creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDProtocolloEqs(), indiceArialDieciSinistra);			//Data Adr			    D_DATA_ADR
			creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDPresIstanza(), indiceArialDieciSinistra);			//Data Istanza		    D_DATA_ISTANZA
			creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, b010.getDScadenzaPrimaRata(), indiceArialDieciSinistra);//Scadenza prima rata	    D_DATA_PRIMA_RATA
			 
				creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNProtProvv() , indiceArialDieciDestra);			
			 
			
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);	//Stato					F_STATO
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNumeroArticoliProtocollati() , indiceArialDieciDestra);	 //Articoli protocollati	N_ARTICOLI
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getImportoProtocollato()/ 100.0, indiceArialDieciDestraMoney);		//Importo protocollato	L_IMPORTO
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getNumeroArticoliProtocollati(), indiceArialDieciDestra);	 	//Articoli dilazionati	N_ARTICOLI_DILAZ
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getImportoDilazionato()/ 100.0, indiceArialDieciDestraMoney);	//Importo dilazionato		L_IMPORTO_DILAZ
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getMora()/ 100.0, indiceArialDieciDestraMoney);	//Mora					L_MORA
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getCompensi()/ 100.0, indiceArialDieciDestraMoney);	//Compensi				L_COMPENSI
			creazioneCellaNumerica(writerDettaglio, indiceRiga, ++colonna, b010.getSpeseEsecutive()/ 100.0, indiceArialDieciDestraMoney);	//Spese esecutive			L_SPESE_ESECUTIVE
			

			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getCodiceFiscale(), indiceArialDieciSinistra);		 //Codice fiscale
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getCognome(), indiceArialDieciSinistra);			//Cognome
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getCognome(), indiceArialDieciSinistra);		//Nome
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getPartitaIva(), indiceArialDieciSinistra);		//Partita Iva
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getDenominazione(), indiceArialDieciSinistra);		//Denominazione
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getIndirizzo(), indiceArialDieciSinistra);		//Via
			 
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Civico numero	 
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getLettera(), indiceArialDieciDestra);		//Civico lettera
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//KM
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Palazzina
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Scala
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Piano
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciDestra);		//Interno
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciSinistra);		//Presso
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna,"", indiceArialDieciSinistra);		//Localita
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna,   //CAP
					StringHandler.fillString("", StringHandler.FILLSX, 5, '0'), 
					indiceArialDieciDestra);		
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getComune(), indiceArialDieciSinistra);		//Comune
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, b010.getProvincia(), indiceArialDieciSinistra);		//Provincia 
			creazioneCellaData(writerDettaglio, indiceRiga, ++colonna, 			//Approvazione
						     new Date(), indiceArialDieciDestra);
			
			
			 
			creazioneCellaTesto(writerDettaglio, indiceRiga, ++colonna, "", indiceArialDieciSinistra);	
			
			
			chiusuraRiga(writerDettaglio);
		 
	}
	

	private void creazioneHeaderProtocolliStampati(Writer writerDettaglio) throws Exception {
		try {
			// STILE.
			
			short indiceArialDieciGrassettoCentroACapoAUTO = getStili().get(ARIAL_DIECI_GRASSETTO_CENTRO_BIANCO).getIndex();

			creazioneRiga(writerDettaglio, 0);
			

			creazioneCellaTesto(writerDettaglio, 0,  0,   LABEL_Ambito                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  1,   LABEL_Protocollo_EQS                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  2,   LABEL_Data                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  3,   LABEL_Protocollo_Adr                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  4,   LABEL_Data_Adr                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  5,   LABEL_Data_Istanza                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  6,   LABEL_Scadenza_prima_rata                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  7,   LABEL_Numero_rate                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  8,   LABEL_Stato                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  9,   LABEL_Articoli_protocollati                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  10,   LABEL_Importo_protocollato                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  11,   LABEL_Articoli_dilazionati                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  12,   LABEL_Importo_dilazionato                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  13,   LABEL_Mora                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  14,   LABEL_Compensi                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  15,   LABEL_Spese_esecutive                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  16,   LABEL_Codice_fiscale                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  17,   LABEL_Cognome                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  18,   LABEL_Nome                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  19,   LABEL_Partita_Iva                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  20,   LABEL_Denominazione                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  21,   LABEL_Via                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  22,   LABEL_Civico_numero                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  23,   LABEL_Civico_lettera                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  24,   LABEL_KM                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  25,   LABEL_Palazzina                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  26,   LABEL_Scala                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  27,   LABEL_Piano                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  28,   LABEL_Interno                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  29,   LABEL_Presso                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  30,   LABEL_Localita                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  31,   LABEL_CAP                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  32,   LABEL_Comune                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  33,   LABEL_Provincia                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  34,   LABEL_Approvazione                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  35,   LABEL_Stampa_massiva_accoglimento                                      , indiceArialDieciGrassettoCentroACapoAUTO);   
						
			chiusuraRiga(writerDettaglio);
		}
		catch (Exception exception) {
			// super.getLogger().error("ERRORE: classe: " + this.getClass().getName() + " metodo: creazioneIntestazioneDettaglio()");
			throw exception;
		}
	}
	
	

	private void creazioneHeaderProtocolliNonStampati(Writer writerDettaglio) throws Exception {
		try { 
			
			short indiceArialDieciGrassettoCentroACapoAUTO = getStili().get(ARIAL_DIECI_GRASSETTO_CENTRO_BIANCO).getIndex();

			creazioneRiga(writerDettaglio, 0);
			

			creazioneCellaTesto(writerDettaglio, 0,  0,   LABEL_Ambito                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  1,   LABEL_Protocollo_EQS                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  2,   LABEL_Data                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  3,   LABEL_Protocollo_Adr                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  4,   LABEL_Data_Adr                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  5,   LABEL_Data_Istanza                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  6,   LABEL_Scadenza_prima_rata                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  7,   LABEL_Numero_rate                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  8,   LABEL_Stato                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  9,   LABEL_Articoli_protocollati                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  10,   LABEL_Importo_protocollato                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  11,   LABEL_Articoli_dilazionati                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  12,   LABEL_Importo_dilazionato                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  13,   LABEL_Mora                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  14,   LABEL_Compensi                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  15,   LABEL_Spese_esecutive                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  16,   LABEL_Codice_fiscale                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  17,   LABEL_Cognome                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  18,   LABEL_Nome                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  19,   LABEL_Partita_Iva                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  20,   LABEL_Denominazione                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  21,   LABEL_Via                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  22,   LABEL_Civico_numero                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  23,   LABEL_Civico_lettera                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  24,   LABEL_KM                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  25,   LABEL_Palazzina                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  26,   LABEL_Scala                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  27,   LABEL_Piano                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  28,   LABEL_Interno                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  29,   LABEL_Presso                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  30,   LABEL_Localita                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  31,   LABEL_CAP                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  32,   LABEL_Comune                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  33,   LABEL_Provincia                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  34,   LABEL_Approvazione                                     , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  35,   LABEL_Normalizzazione_indirizzo                                    , indiceArialDieciGrassettoCentroACapoAUTO);  
			creazioneCellaTesto(writerDettaglio, 0,  36,   LABEL_Causa_scarto                                    , indiceArialDieciGrassettoCentroACapoAUTO);   
						
			chiusuraRiga(writerDettaglio);
		}
		catch (Exception exception) {
			// super.getLogger().error("ERRORE: classe: " + this.getClass().getName() + " metodo: creazioneIntestazioneDettaglio()");
			throw exception;
		}
	}
	
	

	protected Map<String, XSSFCellStyle> creazioneStyles(Workbook workbook) throws Exception { 
			Map<String, XSSFCellStyle> stili = new HashMap<String, XSSFCellStyle>();
			/*
			 * FONTS
			 */
			Font fontGrassetto10Bianco = this.creazioneFont(workbook, (short) 10, "Arial", HSSFColor.WHITE.index, false, true);
			Font fontGrassetto10Nero = this.creazioneFont(workbook, (short) 10, "Arial", HSSFColor.BLACK.index, false, true);
			Font font10 = this.creazioneFont(workbook, (short) 10, "Arial", HSSFColor.BLACK.index, false, false);
			/*
			 * STILI
			 */
			// Colori Java.
			java.awt.Color coloreTitolo = new java.awt.Color(79, 129, 189);
			java.awt.Color coloreRigheDispari = new java.awt.Color(219, 229, 241);
			java.awt.Color coloreRighePari = new java.awt.Color(255, 255, 255);
			// Colori Poi.
			XSSFColor titolo = new XSSFColor(coloreTitolo);
			XSSFColor righePari = new XSSFColor(coloreRighePari);
			XSSFColor righeDispari = new XSSFColor(coloreRigheDispari);
			// Stili.
			XSSFCellStyle arialDieciGrassettoCentroBianco = this.creazioneStyle(workbook, fontGrassetto10Bianco, XSSFCellStyle.ALIGN_CENTER, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, titolo, true, false);
			XSSFCellStyle arialDieciGrassettoCentroNero = this.creazioneStyle(workbook, fontGrassetto10Nero, XSSFCellStyle.ALIGN_CENTER, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, titolo, true, false);
			XSSFCellStyle arialDieciGrassettoDestraNero = this.creazioneStyle(workbook, fontGrassetto10Nero, XSSFCellStyle.ALIGN_RIGHT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righeDispari, false, false);
			XSSFCellStyle arialDieciGrassettoCentroNero2 = this.creazioneStyle(workbook, fontGrassetto10Nero, XSSFCellStyle.ALIGN_CENTER, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righeDispari, true, false);
			XSSFCellStyle arialDieciGrassettoSinistraNero = this.creazioneStyle(workbook, fontGrassetto10Nero, XSSFCellStyle.ALIGN_LEFT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righeDispari, false, false);
			XSSFCellStyle arialDieciDestraSfondoBlu = this.creazioneStyle(workbook, font10, XSSFCellStyle.ALIGN_RIGHT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righeDispari, false, false);
			XSSFCellStyle arialDieciSinistraSfondoBlu = this.creazioneStyle(workbook, font10, XSSFCellStyle.ALIGN_LEFT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righeDispari, false, false);
			XSSFCellStyle arialDieciDestraSfondoBianco = this.creazioneStyle(workbook, font10, XSSFCellStyle.ALIGN_RIGHT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righePari, false, false);
			XSSFCellStyle arialDieciSinistraSfondoBianco = this.creazioneStyle(workbook, font10, XSSFCellStyle.ALIGN_LEFT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righePari, false, false);
			
			XSSFCellStyle arialDieciDestraSfondoBluMoney = this.creazioneStyle(workbook, font10, XSSFCellStyle.ALIGN_RIGHT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righeDispari, false, true);
			XSSFCellStyle arialDieciDestraSfondoBiancoMoney = this.creazioneStyle(workbook, font10, XSSFCellStyle.ALIGN_RIGHT, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, CellStyle.BORDER_THIN, righePari, false, true);
			
			
			stili.put(ARIAL_DIECI_GRASSETTO_CENTRO_BIANCO, arialDieciGrassettoCentroBianco);
			stili.put(ARIAL_DIECI_GRASSETTO_CENTRO_NERO, arialDieciGrassettoCentroNero);
			stili.put(ARIAL_DIECI_GRASSETTO_DESTRA_NERO, arialDieciGrassettoDestraNero);
			stili.put(ARIAL_DIECI_GRASSETTO_CENTRO_NERO2, arialDieciGrassettoCentroNero2);
			stili.put(ARIAL_DIECI_GRASSETTO_SINISTRA_NERO, arialDieciGrassettoSinistraNero);
			stili.put(ARIAL_DIECI_DESTRA_SF_BLU, arialDieciDestraSfondoBlu);
			stili.put(ARIAL_DIECI_SINISTRA_SF_BLU, arialDieciSinistraSfondoBlu);
			stili.put(ARIAL_DIECI_DESTRA_SF_BIANCO, arialDieciDestraSfondoBianco);
			stili.put(ARIAL_DIECI_SINISTRA_SF_BIANCO, arialDieciSinistraSfondoBianco);

			stili.put(ARIAL_DIECI_DESTRA_SF_BLU_MONEY, arialDieciDestraSfondoBluMoney);
			stili.put(ARIAL_DIECI_DESTRA_SF_BIANCO_MONEY, arialDieciDestraSfondoBiancoMoney);
			return stili;
		 
	}

}
